/**
 * Dao层共性模块
 */
package ms.core.gateway.dao;

import java.util.HashMap;
import java.util.Map;

import ms.core.common.Page;
import ms.core.db.mysql.DbConfTool.DbType;
import ms.core.db.mysql.DbUtilsDrv;
import ms.core.db.mysql.IDbDrv;
import ms.core.db.mysql.QueryParam;

public class BaseDao {
	protected IDbDrv db;
	protected String table = null;

	public BaseDao(String table) { 
		db = new DbUtilsDrv(); 
		this.table = table;
	}
	
	public DbType getDbType() { return db.getDbType(); }

	/**
	 * 新增记录
	 * 
	 * @param values
	 */
	public void newRecord(Map<String, Object> values) {
		db.insertRecord(table, values);
	}
	
	/**
	 * 根据记录Id删除记录
	 * 
	 * @param id 记录Id
	 */
	public void delRecord(long id) {
		db.deleteRecord(table, id);
	}

	/**
	 * 根据记录Id更新记录
	 * 
	 * @param id 记录Id
	 */
	public void modRecord(long id, Map<String, Object> values) {
		Map<String, Object> cdt = new HashMap<>();
		cdt.put("id", id);
		db.modifyRecord(table, values, cdt);
	}

	/**
	 * 根据多条件and关系更新记录
	 * 
	 * @param cdt 更新and多条件
	 */
	public void modRecord(Map<String, Object> cdt, Map<String, Object> values) {
		db.modifyRecord(table, values, cdt);
	}
	
	/**
	 * 获取记录详情
	 * 
	 * @param id
	 * @param cls
	 * @return
	 */
	public <T> T getRecord(long id, Class<T> cls) {
		return db.getRecord(table, id, cls);
	}

	/**
	 * 分页查询
	 * 
	 * @param qp
	 * @param cls
	 * @return
	 */
	public <T>Page<T> pageQuery(QueryParam qp, Class<T> cls) {
		return db.queryForPage(qp, cls);
	}
}
